package com.sxt.springcloud.sys;

import com.sxt.springcloud.sys.fallback.MenuClientFallbackService;
import com.sxt.sys.common.DataGridView;
import com.sxt.sys.common.ResultObj;
import com.sxt.sys.domain.User;
import com.sxt.sys.vo.PermissionVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER-SYS",fallbackFactory = MenuClientFallbackService.class)
@RequestMapping("/p/menu")
public interface MenuClientService {




    @RequestMapping("loadIndexLeftMenuJson")
    DataGridView loadIndexLeftMenuJson(
            @RequestParam("userType") Integer userType
            , @RequestParam("userId")Integer userId);


    /****************菜单管理开始****************/

    /**
     * 加载菜单管理左边的菜单树的json
     */
    @RequestMapping("loadMenuManagerLeftTreeJson")
    DataGridView loadMenuManagerLeftTreeJson(@RequestBody PermissionVo permissionVo);

    /**
     * 查询
     */
    @RequestMapping("loadAllMenu")
    DataGridView loadAllMenu(@RequestBody PermissionVo permissionVo);

    /**
     * 加载最大的排序码
     * @param
     * @return
     */
    @RequestMapping("loadMenuMaxOrderNum")
    Map<String,Object> loadMenuMaxOrderNum();


    /**
     * 添加
     * @param permissionVo
     * @return
     */
    @RequestMapping("addMenu")
    ResultObj addMenu(@RequestBody PermissionVo permissionVo);


    /**
     * 修改
     * @param permissionVo
     * @return
     */
    @RequestMapping("updateMenu")
    ResultObj updateMenu(@RequestBody PermissionVo permissionVo);


    /**
     * 查询当前的ID的菜单有没有子菜单
     */
    @RequestMapping("checkMenuHasChildrenNode")
    Map<String,Object> checkMenuHasChildrenNode(@RequestBody PermissionVo permissionVo);

    /**
     * 删除
     * @param permissionVo
     * @return
     */
    @RequestMapping("deleteMenu")
    ResultObj deleteMenu(@RequestBody PermissionVo permissionVo);

    /****************菜单管理结束****************/
}
